package com.wzdigit.wms.basic.client.response.basic;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.wzdigit.wms.basic.client.BasicResponse;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;

/**
 * 库位输出
 * @author yangdongjie
 * @WarehouseAttrResponse.java
 * @2020年12月31日下午5:18:20
 */
@Data
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler", "fieldHandler"}, ignoreUnknown = true)
public class LocationResponse extends BasicResponse {

	private static final long serialVersionUID = 6072692023040146906L;

	/**
	 * 库位ID
	 */
	@ApiModelProperty(value = "库位ID", required = true)
	private Integer locId;

	/**
	 * 库位代码
	 */
	@ApiModelProperty(value = "库位代码", required = true)
    private String locCode;

	/**
	 * 库位描述
	 */
	@ApiModelProperty(value = "库位描述", required = true)
    private String locDesc;

	/**
	 * 库位显示
	 */
	@ApiModelProperty(value = "库位显示", required = true)
    private String locDisp;

	/**
	 * 电子标签ID
	 */
	@ApiModelProperty(value = "电子标签ID", required = false)
    private Integer rfidId;

	/**
	 * 货架ID
	 * 表示入库流程中，需要上架到该库区的货物，将首先移动到制定的库位作为上架过渡。通常情况下可跳过，不设置
	 */
	@ApiModelProperty(value = "货架ID", required = false)
    private Integer rackId;

	/**
	 * 使用方式/用途：
	 * --枚举类型
	 * 箱拣货库位、件拣货库位、箱/件拣货库位、存储库位、过渡库位、理货站和组装工作区
	 */
	@ApiModelProperty(value = "使用方式/用途", required = true)
    private Integer locUsage;

	/**
	 * 库位类型：
	 * --枚举类型
	 * 地面平仓、重力式货架、货架和窄巷道货架
	 */
	@ApiModelProperty(value = "库位类型", required = true)
    private Integer locType;

	/**
	 * 属性
	 * --枚举类型
	 * 正常、封存、管控和禁入
	 */
	@ApiModelProperty(value = "属性", required = true)
    private Integer locAttr;

	/**
	 * 库位处理：
	 * --枚举类型
	 * 识别在库位中将存放的产品包装的类型。系统提供以下 3 种类型：仅限于箱、仅限于托盘和其他。
	 */
	@ApiModelProperty(value = "库位处理", required = false)
    private Integer locHandling;

	/**
	 * 库存/存储环境
	 */
	@ApiModelProperty(value = "库存/存储环境", required = false)
    private String storeEnv;

	/**
	 * 重量限制
	 */
	@ApiModelProperty(value = "重量限制", required = true)
    private BigDecimal weightCapacity;

	/**
	 * 体积限制
	 */
	@ApiModelProperty(value = "体积限制", required = true)
    private BigDecimal cubicCapacity;

	/**
	 * 数量限制
	 */
	@ApiModelProperty(value = "数量限制", required = true)
    private Integer countCapacity;

	/**
	 * 托盘数量限制
	 */
	@ApiModelProperty(value = "托盘数量限制", required = true)
    private Integer pltCount;

	/**
	 * 箱子数量限制
	 */
	@ApiModelProperty(value = "箱子数量限制", required = true)
    private Integer csCount;

	/**
	 * SKU限制
	 */
	@ApiModelProperty(value = "SKU限制", required = true)
    private Integer skuCapacity;

	/**
	 * 上架顺序：
	 */
	@ApiModelProperty(value = "上架顺序", required = true)
    private String putawaySeq;

	/**
	 * 拣货顺序：
	 */
	@ApiModelProperty(value = "拣货顺序", required = true)
    private String pickSeq;

	/**
	 * 忽略 ID：
	 */
	@ApiModelProperty(value = "忽略 ID", required = false)
    private Integer loseIdFlag;

	/**
	 * 允许混放产品：
	 */
	@ApiModelProperty(value = "允许混放产品", required = false)
    private Integer mixFlag;

	/**
	 * 允许混放批次：
	 */
	@ApiModelProperty(value = "允许混放批次", required = false)
    private Integer mixLotFlag;

	/**
	 * 周转需求：
	 * --枚举类型
	 * 库位的周转类型，如快速周转、中速周转和慢速周转。通常与产品 ABC分级配合使用。
	 */
	@ApiModelProperty(value = "周转需求", required = false)
    private Integer demand;

	/**
	 * 校验码：
	 * 操作库位确认时，可通过扫描校验码确认库位，而不是仅仅根据库位 ID。
	 */
	@ApiModelProperty(value = "校验码", required = false)
    private String validationCode;

	/**
	 * 长
	 */
	@ApiModelProperty(value = "长", required = false)
    private Integer length;

	/**
	 * 宽
	 */
	@ApiModelProperty(value = "宽", required = false)
    private Integer weidth;

	/**
	 * 高
	 */
	@ApiModelProperty(value = "高", required = false)
    private Integer height;

	/**
	 * X 坐标
	 * 库位的 X、Y、Z 坐标和层数，空间定位信息，多用于自动化仓库，在库位就近逻辑计算中也有使用。
	 */
	@ApiModelProperty(value = "x轴坐标", required = false)
    private Integer xcoord;

	/**
	 * Y 坐标
	 * 库位的 X、Y、Z 坐标和层数，空间定位信息，多用于自动化仓库，在库位就近逻辑计算中也有使用。
	 */
	@ApiModelProperty(value = "y轴坐标", required = false)
    private Integer ycoord;

	/**
	 * Z 坐标
	 * 库位的 X、Y、Z 坐标和层数，空间定位信息，多用于自动化仓库，在库位就近逻辑计算中也有使用。
	 */
	@ApiModelProperty(value = "z轴坐标", required = false)
    private Integer zcoord;

	/**
	 * 层数
	 * 库位的 X、Y、Z 坐标和层数，空间定位信息，多用于自动化仓库，在库位就近逻辑计算中也有使用。
	 */
	@ApiModelProperty(value = "层数", required = false)
    private Integer locLevel;

	/**
	 * X像素
	 * 图形化界面配置使用
	 */
	@ApiModelProperty(value = "x像素", required = false)
    private Integer xpixel;

	/**
	 * Y像素
	 * 图形化界面配置使用
	 */
	@ApiModelProperty(value = "y像素", required = false)
    private Integer ypixel;

    /**
     * 状态
     */
    @ApiModelProperty(value = "状态", required = true)
    private Integer status;

    /**
     * 备注
     */
    @ApiModelProperty(value = "备注", required = false)
    private String comments;

    /**
     * 用户自定义字段1（使用方式/用途）
     */
    @ApiModelProperty(value = "用户自定义字段1（使用方式/用途）", required = true)
    private String udf1;

    /**
     * 用户自定义字段2（库位类型）
     */
    @ApiModelProperty(value = "用户自定义字段2（库位类型）", required = true)
    private String udf2;

    /**
     * 用户自定义字段3（属性）
     */
    @ApiModelProperty(value = "用户自定义字段3（属性）", required = true)
    private String udf3;

    /**
     * 用户自定义字段4（库位处理）
     */
    @ApiModelProperty(value = "用户自定义字段4（库位处理）", required = true)
    private String udf4;

    /**
     * 用户自定义字段5（周转需求）
     */
    @ApiModelProperty(value = "用户自定义字段5（周转需求）", required = true)
    private String udf5;

    
    
    // 库区ID
	@ApiModelProperty(value = "库区ID", required = true)
    private Integer zoneId;
	
	// 库区代码
	@ApiModelProperty(value = "库区代码", required = true)
	private String zoneCode;

	// 库区名称
	@ApiModelProperty(value = "库区名称", required = true)
	private String zoneName;
	
	
	
	// 区域ID
	@ApiModelProperty(value = "区域ID", required = true)
	private Integer zoneGroupId;

	// 区域代码
	@ApiModelProperty(value = "区域代码", required = true)
	private String zoneGroupCode;

	// 区域名称
	@ApiModelProperty(value = "区域名称", required = true)
	private String zoneGroupName;
	
	
	// 仓库ID
	@ApiModelProperty(value = "仓库ID", required = true)
	private Integer whsId;

	// 仓库代码
	@ApiModelProperty(value = "仓库代码", required = true)
	private String whsCode;

	// 仓库名称
	@ApiModelProperty(value = "仓库名称", required = true)
	private String whsName;

}